In conventional messaging systems, the communication routes between brokers are statically defined at system setup, often based on the connections of message consumers who exist at the time that the network is first configured. Such systems typically follow a publish and subscribe model of message distribution, forwarding all messages from message producers to all brokers in the network because a consumer for any particular message may potentially be connected to any broker in the network. Such conventional systems have no knowledge or tracking of whether or not a consumer for a particular message exists along any particular route through the network.
As a consequence, conventional systems constantly forward messages to brokers that have no consumers connected to them, either directly or indirectly. This results in inefficient and unnecessary use of system resources, such as communication bandwidth between brokers, as well as processing and storage resources on each individual broker that unnecessarily handles a message for which there is no downstream consumer. This also results in increased and unnecessary security risks, as messages traverse communications links between brokers, and are stored at least briefly on brokers, in portions of the network that do not lead to message consumers.
Accordingly, it is desirable to provide systems and methods that dynamically route messages only to brokers and portions of the messaging network that lead to currently connected consumer(s) of the messages.